package com.smm.ctrm.bo.Basis;

import java.util.List;
import java.util.Map;

import com.smm.ctrm.domain.Basis.Account;
import com.smm.ctrm.domain.Basis.Brand;
import com.smm.ctrm.domain.Basis.Bvi2Sm;
import com.smm.ctrm.domain.Basis.Commodity;
import com.smm.ctrm.domain.Basis.GlobalSet;
import com.smm.ctrm.domain.Basis.Instrument;
import com.smm.ctrm.domain.Basis.Market;
import com.smm.ctrm.domain.Basis.Origin;
import com.smm.ctrm.domain.Basis.Period;
import com.smm.ctrm.domain.Basis.Preset;
import com.smm.ctrm.domain.Basis.PricingShortcut;
import com.smm.ctrm.domain.Basis.Product;
import com.smm.ctrm.domain.Basis.Spec;
import com.smm.ctrm.domain.Basis.StorageTemplate;
import com.smm.ctrm.domain.Basis.Warehouse;
import com.smm.ctrm.domain.Maintain.Calendar;
import com.smm.ctrm.domain.Maintain.Exchange;
import com.smm.ctrm.domain.Maintain.LME;
import com.smm.ctrm.dto.res.ActionResult;
public interface BasisService {
	ActionResult<GlobalSet> MyGlobalSet(String orgId);
	ActionResult<GlobalSet> SaveGlobalSet(GlobalSet globalSet);
	ActionResult<List<Preset>> Presets();
	ActionResult<List<Preset>> BackPresets();
	ActionResult<Preset> SavePreset(Preset preset);
	ActionResult<Preset> DeletePreset(String id);
	ActionResult<List<Account>> Accounts();
	ActionResult<List<Account>> BackAccounts();
	ActionResult<Account> SaveAccount(Account param);
	ActionResult<String> DeleteAccount(String id);
	ActionResult<List<Period>> Periods();
	ActionResult<List<Period>> BackPeriods();
	ActionResult<Period> SavePeriod(Period param);
	ActionResult<String> DeletePeriod(String id);
	ActionResult<List<PricingShortcut>> PricingTypes();
	ActionResult<List<PricingShortcut>> BackPricingTypes();
	ActionResult<PricingShortcut> SavePricingType(PricingShortcut pricingType);
	ActionResult<String> DeletePricingType(String id);
	ActionResult<List<Commodity>> Commoditys();
	ActionResult<List<Commodity>> BackCommoditys();
	ActionResult<Commodity> SaveCommodity(Commodity commodity);
	ActionResult<String> DeleteCommodity(String id);
	ActionResult<List<Brand>> Brands();
	ActionResult<List<Brand>> BackBrands();
	ActionResult<Brand> SaveBrand(Brand brand);
	ActionResult<String> DeleteBrand(String id);
	ActionResult<List<Spec>> Specs();
	ActionResult<List<Spec>> BackSpecs();
	ActionResult<Spec> SaveSpec(Spec spec);
	ActionResult<String> DeleteSpec(String id);
	ActionResult<List<Origin>> Origins();
	ActionResult<List<Origin>> BackOrigins();
	ActionResult<Origin> SaveOrigin(Origin origin);
	ActionResult<String> DeleteOrigin(String id);
	void SaveProduct(Product product);
	void DeleteProduct(String id);
	ActionResult<List<Warehouse>> Warehouses();
	ActionResult<List<Warehouse>> BackWarehouses();
	ActionResult<Warehouse> SaveWarehouse(Warehouse warehouse);
	ActionResult<String> DeleteWarehouse(String id);
	ActionResult<List<Instrument>> Instruments();
	ActionResult<List<Instrument>> BackInstruments();
	ActionResult<Instrument> SaveInstrument(Instrument instrument);
	ActionResult<String> DeleteInstrument(String id);
	ActionResult<List<Market>> Markets();
	ActionResult<List<Market>> BackMarkets();
	ActionResult<List<Market>> SpotMarkets();
	ActionResult<List<Market>> BackSpotMarkets();
	ActionResult<List<Market>> ForwardMarkets();
	ActionResult<List<Market>> BackForwardMarkets();
	ActionResult<Market> SaveMarket(Market market);
	ActionResult<String> DeleteMarket(String id);
	ActionResult<List<Exchange>> Exchanges();
	ActionResult<List<Exchange>> BackExchanges();
	ActionResult<Exchange> SaveExchange(Exchange exchange);
	ActionResult<String> DeleteExchange(String id);
	ActionResult<List<Calendar>> Calendars();
	ActionResult<List<Calendar>> BackCalendars();
	ActionResult<Calendar> SaveCalendar(Calendar calendar);
	ActionResult<String> DeleteCalendar(String id);
	ActionResult<List<LME>> LMEs();
	ActionResult<List<LME>> BackLMEs();
	ActionResult<LME> SaveLME(LME lme);
	ActionResult<String> DeleteLME(String id);
	ActionResult<Bvi2Sm> Bvi2Sm();
	ActionResult<String> GetObjectByName(Map<String, String> dicts);
	ActionResult<List<StorageTemplate>> LoadStorageTemplateData() ;
	ActionResult<String> CrerateStorageTemplateData(List<StorageTemplate> storage_template_data);
}